<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Framebuffer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Framebuffer"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Framebuffer rootpage-Framebuffer skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Framebuffer</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p class="mw-empty-elt">
</p>
<p>A <b>framebuffer</b> (<b>frame buffer</b>, or sometimes <b>framestore</b>) is a portion of <a href="Random-access_memory" title="Random-access memory">random-access memory</a> (RAM)<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> containing a <a href="Bitmap" title="Bitmap">bitmap</a> that drives a video display. It is a <a href="Memory_buffer" class="mw-redirect" title="Memory buffer">memory buffer</a> containing data representing all the <a href="Pixel" title="Pixel">pixels</a> in a complete <a href="Video_frame" class="mw-redirect" title="Video frame">video frame</a>.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> Modern <a href="Video_card" class="mw-redirect" title="Video card">video cards</a> contain framebuffer circuitry in their cores. This circuitry converts an in-memory bitmap into a <a href="Video_signal" class="mw-redirect" title="Video signal">video signal</a> that can be displayed on a computer monitor.
</p><p>In <a href="Computing" title="Computing">computing</a>, a <b>screen buffer</b> is a part of <a href="Computer_memory" title="Computer memory">computer memory</a> used by a computer application for the representation of the content to be shown on the <a href="Computer_display" class="mw-redirect" title="Computer display">computer display</a>.<sup id="cite_ref-google_3-0" class="reference"><a href="#cite_note-google-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> The screen buffer may also be called the <b>video buffer</b>, the <b>regeneration buffer</b>, or <b>regen buffer</b> for short.<sup id="cite_ref-smartcomputing_4-0" class="reference"><a href="#cite_note-smartcomputing-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Screen buffers should be distinguished from <a href="Video_memory" class="mw-redirect" title="Video memory">video memory</a>. To this end, the term <b>off-screen buffer</b> is also used.
</p><p>The information in the buffer typically consists of color values for every pixel to be shown on the display. Color values are commonly stored in 1-bit <a href="Binary_image" title="Binary image">binary</a> (monochrome), 4-bit <a href="Palette_(computing)" title="Palette (computing)">palettized</a>, 8-bit palettized, 16-bit <a href="High_color" title="High color">high color</a> and 24-bit <a href="Color_depth#True_color_.2824-bit.29" title="Color depth">true color</a> formats. An additional <a href="Alpha_channel" class="mw-redirect" title="Alpha channel">alpha channel</a> is sometimes used to retain information about pixel transparency. The total amount of memory required for the framebuffer depends on the <a href="Display_resolution" title="Display resolution">resolution</a> of the output signal, and on the <a href="Color_depth" title="Color depth">color depth</a> or palette size.
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p>Computer researchers had long discussed the theoretical advantages of a framebuffer but were unable to produce a machine with sufficient <a href="Computer_memory" title="Computer memory">memory</a> at an economically practicable cost.<sup id="cite_ref-Gaboury_5-0" class="reference"><a href="#cite_note-Gaboury-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> In 1947, the <a href="Manchester_Baby" title="Manchester Baby">Manchester Baby</a> computer used a <a href="Williams_tube" title="Williams tube">Williams tube</a>, later the Williams-Kilburn tube, to store 1024 bits on a <a href="Cathode-ray_tube" title="Cathode-ray tube">cathode-ray tube (CRT)</a> memory and displayed on a second CRT.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> Other research labs were exploring these techniques with <a href="MIT_Lincoln_Laboratory" title="MIT Lincoln Laboratory">MIT Lincoln Laboratory</a> achieving a 4096 display in 1950.<sup id="cite_ref-Gaboury_5-1" class="reference"><a href="#cite_note-Gaboury-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>
</p><p>A color-scanned display was implemented in the late 1960s, called the <a href="Brookhaven_National_Laboratory" title="Brookhaven National Laboratory">Brookhaven</a> RAster Display (BRAD), which used a <a href="Drum_memory" title="Drum memory">drum memory</a> and a television monitor.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> In 1969, A. Michael Noll of <a href="Bell_Telephone_Laboratories%2C_Inc." class="mw-redirect" title="Bell Telephone Laboratories, Inc.">Bell Telephone Laboratories, Inc.</a> implemented a scanned display with a frame buffer, using <a href="Magnetic-core_memory" title="Magnetic-core memory">magnetic-core memory</a>.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> A year or so later, the Bell Labs system was expanded to display an image with a color depth of three bits on a standard color TV monitor. The vector graphics used in the computer had to be converted for the scanned graphics of a TV display.
</p><p>In the early 1970s, the development of <a href="MOS_memory" class="mw-redirect" title="MOS memory">MOS memory</a> (<a href="Metal%E2%80%93oxide%E2%80%93semiconductor" class="mw-redirect" title="Metal–oxide–semiconductor">metal–oxide–semiconductor</a> memory) <a href="Integrated_circuit" title="Integrated circuit">integrated-circuit</a> chips, particularly <a href="Large-scale_integration" class="mw-redirect" title="Large-scale integration">high-density</a> <a href="DRAM" class="mw-redirect" title="DRAM">DRAM</a> (dynamic <a href="Random-access_memory" title="Random-access memory">random-access memory</a>) chips with at least 1<span class="nowrap"> </span><a href="Kibibit" class="mw-redirect" title="Kibibit">kb</a> memory, made it practical to create, for the first time, a <a href="Digital_memory" class="mw-redirect" title="Digital memory">digital memory</a> system with framebuffers capable of holding a standard video image.<sup id="cite_ref-Shoup_SuperPaint_10-0" class="reference"><a href="#cite_note-Shoup_SuperPaint-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> This led to the development of the <a href="SuperPaint" title="SuperPaint">SuperPaint</a> system by <a href="Richard_Shoup_(programmer)" title="Richard Shoup (programmer)">Richard Shoup</a> at <a href="Xerox_PARC" class="mw-redirect" title="Xerox PARC">Xerox PARC</a> in 1972.<sup id="cite_ref-Shoup_SuperPaint_10-1" class="reference"><a href="#cite_note-Shoup_SuperPaint-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> Shoup was able to use the SuperPaint framebuffer to create an early digital video-capture system. By synchronizing the output signal to the input signal, Shoup was able to overwrite each pixel of data as it shifted in. Shoup also experimented with modifying the output signal using color tables. These color tables allowed the SuperPaint system to produce a wide variety of colors outside the range of the limited 8-bit data it contained. This scheme would later become commonplace in computer framebuffers.
</p><p>In 1974, <a href="Evans_%26_Sutherland" title="Evans & Sutherland">Evans & Sutherland</a> released the first commercial framebuffer, the Picture System,<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> costing about $15,000. It was capable of producing resolutions of up to 512 by 512 pixels in 8-bit <a href="Grayscale" title="Grayscale">grayscale</a>, and became a boon for graphics researchers who did not have the resources to build their own framebuffer. The <a href="New_York_Institute_of_Technology" title="New York Institute of Technology">New York Institute of Technology</a> would later create the first 24-bit color system using three of the Evans & Sutherland framebuffers.<sup id="cite_ref-NYIT-History_13-0" class="reference"><a href="#cite_note-NYIT-History-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> Each framebuffer was connected to an <a href="RGB" class="mw-redirect" title="RGB">RGB</a> color output (one for red, one for green and one for blue), with a Digital Equipment Corporation PDP 11/04 <a href="Minicomputer" title="Minicomputer">minicomputer</a> controlling the three devices as one.
</p><p>In 1975, the UK company <a href="Quantel" title="Quantel">Quantel</a> produced the first commercial full-color broadcast framebuffer, the Quantel DFS 3000. It was first used in TV coverage of the <a href="1976_Montreal_Olympics" class="mw-redirect" title="1976 Montreal Olympics">1976 Montreal Olympics</a> to generate a <a href="Picture-in-picture" title="Picture-in-picture">picture-in-picture</a> inset of the Olympic flaming torch while the rest of the picture featured the runner entering the stadium.
</p><p>The rapid improvement of integrated-circuit technology made it possible for many of the home computers of the late 1970s to contain low-color-depth framebuffers. Today, nearly all computers with graphical capabilities utilize a framebuffer for generating the video signal. <a href="Amiga" title="Amiga">Amiga</a> computers, created in the 1980s, featured special design attention to graphics performance and included a unique <a href="Hold-And-Modify" title="Hold-And-Modify">Hold-And-Modify</a> framebuffer capable of displaying 4096 colors.
</p><p>Framebuffers also became popular in high-end workstations and <a href="Arcade_system_board" class="mw-redirect" title="Arcade system board">arcade system boards</a> throughout the 1980s. <a href="Silicon_Graphics" title="Silicon Graphics">SGI</a>, <a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>, <a href="Hewlett-Packard" title="Hewlett-Packard">HP</a>, <a href="Digital_Equipment_Corporation" title="Digital Equipment Corporation">DEC</a> and <a href="IBM" title="IBM">IBM</a> all released framebuffers for their workstation computers in this period. These framebuffers were usually of a much higher quality than could be found in most home computers, and were regularly used in television, printing, computer modeling and 3D graphics. Framebuffers were also used by <a href="Sega" title="Sega">Sega</a> for its high-end <a href="List_of_Sega_arcade_system_boards" title="List of Sega arcade system boards">arcade boards</a>, which were also of a higher quality than on home computers.
</p>
<div class="mw-heading mw-heading2"><h2 id="Display_modes">Display modes</h2></div>
<p>Framebuffers used in personal and home computing often had sets of defined <i>modes</i> under which the framebuffer can operate. These modes reconfigure the hardware to output different resolutions, color depths, memory layouts and <a href="Refresh_rate" title="Refresh rate">refresh rate</a> timings.
</p><p>In the world of <a href="Unix" title="Unix">Unix</a> machines and operating systems, such conveniences were usually eschewed in favor of directly manipulating the hardware settings. This manipulation was far more flexible in that any resolution, color depth and refresh rate was attainable – limited only by the memory available to the framebuffer.
</p><p>An unfortunate side-effect of this method was that the <a href="Display_device" title="Display device">display device</a> could be driven beyond its capabilities. In some cases, this resulted in hardware damage to the display.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> More commonly, it simply produced garbled and unusable output. Modern CRT monitors fix this problem through the introduction of protection circuitry. When the display mode is changed, the monitor attempts to obtain a signal lock on the new refresh frequency. If the monitor is unable to obtain a signal lock or if the signal is outside the range of its design limitations, the monitor will ignore the framebuffer signal and possibly present the user with an error message.
</p><p>LCD monitors tend to contain similar protection circuitry, but for different reasons. Since the LCD must digitally sample the display signal (thereby emulating an electron beam), any signal that is out of range cannot be physically displayed on the monitor.
</p>
<div class="mw-heading mw-heading2"><h2 id="Color_palette">Color palette</h2></div>
<p>Framebuffers have traditionally supported a wide variety of color modes. Due to the expense of memory, most early framebuffers used 1-bit (2 colors per pixel), 2-bit (4 colors), 4-bit (16 colors) or 8-bit (256 colors) color depths. The problem with such small color depths is that a full range of colors cannot be produced. The solution to this problem was <a href="Indexed_color" title="Indexed color">indexed color</a>, which adds a <a href="Lookup_table" title="Lookup table">lookup table</a> to the framebuffer. Each color stored in framebuffer memory acts as a color index. The lookup table serves as a palette with a limited number of different colors, while the rest is used as an index table.
</p><p>Here is a typical indexed 256-color image and its own palette (shown as a rectangle of swatches):
</p>
<dl><dd><table style="border-style: none" border="0" cellpadding="0">
<tbody><tr>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td>
<td>
</td>
<td><span class="mw-default-size" typeof="mw:File"></span>
</td></tr></tbody></table></dd></dl>
<p>In some designs it was also possible to write data to the lookup table (or switch between existing palettes) on the fly, allowing dividing the picture into horizontal bars with their own palette and thus render an image that had a far wider palette. For example, viewing an outdoor shot photograph, the picture could be divided into four bars: the top one with emphasis on sky tones, the next with foliage tones, the next with skin and clothing tones, and the bottom one with ground colors. This required each palette to have overlapping colors, but, carefully done, allowed great flexibility.
</p>
<div class="mw-heading mw-heading2"><h2 id="Memory_access">Memory access</h2></div>
<p>While framebuffers are commonly accessed via a <a href="Memory-mapped_I/O" class="mw-redirect" title="Memory-mapped I/O">memory mapping</a> directly to the CPU memory space, this is not the only method by which they may be accessed. Framebuffers have varied widely in the methods used to access memory. Some of the most common are:
</p>
<ul><li>Mapping the entire framebuffer to a given memory range.</li>
<li>Port commands to set each pixel, range of pixels or palette entry.</li>
<li>Mapping a memory range smaller than the framebuffer memory, then <a href="Bank_switching" title="Bank switching">bank switching</a> as necessary.</li></ul>
<p>The framebuffer organization may be <a href="Packed_pixel" title="Packed pixel">packed pixel</a> or <a href="Planar_(computer_graphics)" title="Planar (computer graphics)">planar</a>. The framebuffer may be <a href="All_points_addressable" class="mw-redirect" title="All points addressable">all points addressable</a> or have restrictions on how it can be updated.
</p>
<div class="mw-heading mw-heading2"><h2 id="RAM_on_the_video_card">RAM on the video card</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">See also: <a href="Video_memory" class="mw-redirect" title="Video memory">Video memory</a></div>
<p>Video cards always have a certain amount of RAM. A small portion of this RAM is where the bitmap of image data is "buffered" for display. The term <i>frame buffer</i> is thus often used interchangeably when referring to this RAM.
</p><p>The CPU sends image updates to the video card. The video processor on the card forms a picture of the screen image and stores it in the frame buffer as a large bitmap in RAM. The bitmap in RAM is used by the card to continually refresh the screen image.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Virtual_framebuffers">Virtual framebuffers</h2></div>
<p>Many systems attempt to emulate the function of a framebuffer device, often for reasons of compatibility. The two most common <a href="Virtualization" title="Virtualization">virtual</a> framebuffers are the <a href="Linux_framebuffer" title="Linux framebuffer">Linux framebuffer</a> device (fbdev) and the X Virtual Framebuffer (<a href="Xvfb" title="Xvfb">Xvfb</a>). Xvfb was added to the <a href="X_Window_System" title="X Window System">X Window System</a> distribution to provide a method for running X without a graphical framebuffer. The Linux framebuffer device was developed to abstract the physical method for accessing the underlying framebuffer into a guaranteed memory map that is easy for programs to access. This increases portability, as programs are not required to deal with systems that have disjointed memory maps or require <a href="Bank_switching" title="Bank switching">bank switching</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Page_flipping">Page flipping</h2></div>
<p>A frame buffer may be designed with enough memory to store two frames' worth of video data. In a technique known generally as <a href="Double_buffering" class="mw-redirect" title="Double buffering">double buffering</a> or more specifically as <a href="Page_flipping" class="mw-redirect" title="Page flipping">page flipping</a>, the framebuffer uses half of its memory to display the current frame. While that memory is being displayed, the other half of memory is filled with data for the next frame. Once the secondary buffer is filled, the framebuffer is instructed to display the secondary buffer instead. The primary buffer becomes the secondary buffer, and the secondary buffer becomes the primary. This switch is often done after the <a href="Vertical_blanking_interval" title="Vertical blanking interval">vertical blanking interval</a> to avoid <a href="Screen_tearing" title="Screen tearing">screen tearing</a> where half the old frame and half the new frame is shown together.
</p><p>Page flipping has become a standard technique used by PC <a href="Game_programmer" class="mw-redirect" title="Game programmer">game programmers</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Graphics_accelerators">Graphics accelerators</h2></div>
<div role="note" class="hatnote navigation-not-searchable">See also: <a href="Video_card" class="mw-redirect" title="Video card">Video card</a> and <a href="Graphics_processing_unit" title="Graphics processing unit">Graphics processing unit</a></div>
<p>As the demand for better graphics increased, hardware manufacturers created a way to decrease the amount of <a href="CPU" class="mw-redirect" title="CPU">CPU</a> time required to fill the framebuffer. This is commonly called <i>graphics acceleration</i>. Common graphics drawing commands (many of them geometric) are sent to the graphics accelerator in their raw form. The accelerator then <a href="Rasterisation" title="Rasterisation">rasterizes</a> the results of the command to the framebuffer. This method frees the CPU to do other work.
</p><p>Early accelerators focused on improving the performance of 2D <a href="GUI" class="mw-redirect" title="GUI">GUI</a> systems. While retaining these 2D capabilities, most modern accelerators focus on producing 3D imagery in real time. A common design uses a <a href="Graphics_library" title="Graphics library">graphics library</a> such as <a href="OpenGL" title="OpenGL">OpenGL</a> or <a href="Direct3D" title="Direct3D">Direct3D</a> which interfaces with the graphics driver to translate received commands to instructions for the accelerator's <a href="Graphics_processing_unit" title="Graphics processing unit">graphics processing unit</a> (GPU). The GPU uses those instructions to compute the rasterized results and the results are <a href="Bit_blit" title="Bit blit">bit blitted</a> to the framebuffer. The framebuffer's signal is then produced in combination with built-in video overlay devices (usually used to produce the mouse cursor without modifying the framebuffer's data) and any final special effects that are produced by modifying the output signal. An example of such final special effects was the <a href="Spatial_anti-aliasing" title="Spatial anti-aliasing">spatial anti-aliasing</a> technique used by the <a href="3dfx_Voodoo" class="mw-redirect" title="3dfx Voodoo">3dfx Voodoo</a> cards. These cards add a slight blur to the output signal that makes aliasing of the rasterized graphics much less obvious.
</p><p>At one time there were many manufacturers of graphics accelerators, including: <a href="3dfx_Interactive" class="mw-redirect" title="3dfx Interactive">3dfx Interactive</a>; <a href="ATI_Technologies" title="ATI Technologies">ATI</a>; <a href="Hercules_Computer_Technology" title="Hercules Computer Technology">Hercules</a>; <a href="Trident_Microsystems" title="Trident Microsystems">Trident</a>; <a href="Nvidia" title="Nvidia">Nvidia</a>; <a href="Radius_(hardware_company)" class="mw-redirect" title="Radius (hardware company)">Radius</a>; <a href="S3_Graphics" title="S3 Graphics">S3 Graphics</a>; <a href="Silicon_Integrated_Systems" title="Silicon Integrated Systems">SiS</a> and <a href="Silicon_Graphics" title="Silicon Graphics">Silicon Graphics</a>. As of 2015 the market for graphics accelerators for x86-based systems is dominated by Nvidia (acquired 3dfx in 2002), <a href="AMD" title="AMD">AMD</a> (who acquired ATI in 2006), and <a href="Intel" title="Intel">Intel</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Comparisons">Comparisons</h2></div>
<p>With a framebuffer, the electron beam (if the display technology uses one) is commanded to perform a <a href="Raster_scan" title="Raster scan">raster scan</a>, the way a <a href="Television" title="Television">television</a> renders a broadcast signal. The color information for each point thus displayed on the screen is pulled directly from the framebuffer during the scan, creating a set of discrete picture elements, i.e., pixels.
</p><p>Framebuffers differ significantly from the <a href="Vector_display" class="mw-redirect" title="Vector display">vector displays</a> that were common prior to the advent of raster graphics (and, consequently, to the concept of a framebuffer). With a vector display, only the <a href="Vertex_(geometry)" title="Vertex (geometry)">vertices</a> of the graphics primitives are stored. The <a href="Electron_beam" class="mw-redirect" title="Electron beam">electron beam</a> of the output display is then commanded to move from vertex to vertex, tracing a line across the area between these points.
</p><p>Likewise, framebuffers differ from the technology used in early <a href="Text_mode" title="Text mode">text mode</a> displays, where a buffer holds codes for characters, not individual pixels. The video display device performs the same raster scan as with a framebuffer but generates the pixels of each character in the buffer as it directs the beam.
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Bit_plane" title="Bit plane">Bit plane</a></li>
<li><a href="Scanline_rendering" title="Scanline rendering">Scanline rendering</a></li>
<li><a href="Swap_chain" title="Swap chain">Swap chain</a></li>
<li><a href="Tile-based_video_game" title="Tile-based video game">Tile-based video game</a></li>
<li><a href="Tiled_rendering" title="Tiled rendering">Tiled rendering</a></li>
<li><a href="Tektronix_4050" title="Tektronix 4050">Tektronix 4050</a> used a <a href="Storage_tube" title="Storage tube">storage tube</a> to eliminate the need for framebuffer memory</li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.webopedia.com/TERM/F/frame_buffer.html">"What is frame buffer? A Webopedia Definition"</a>. <i>webopedia.com</i>. June 1998.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.sunhelp.org/faq/FrameBuffer.html#00">"Frame Buffer FAQ"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">14 May</span> 2014</span>.</cite></span>
</li>
<li id="cite_note-google-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-google_3-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMueller,_J.2002" class="citation book cs1">Mueller, J. (2002). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=XYQruTc6_44C"><i>.NET Framework Solutions: In Search of the Lost Win32 API</i></a>. Wiley. p. 160. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9780782141344</bdi><span class="reference-accessdate">. Retrieved <span class="nowrap">2015-04-21</span></span>.</cite></span>
</li>
<li id="cite_note-smartcomputing-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-smartcomputing_4-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20120324192310/http://www.smartcomputing.com/editorial/dictionary/detail.asp?searchtype=2&DicID=10421&RefType=Dictionary&guid=">"Smart Computing Dictionary Entry - video buffer"</a>. Archived from <a rel="nofollow" class="external text" href="http://www.smartcomputing.com/editorial/dictionary/detail.asp?searchtype=2&DicID=10421&RefType=Dictionary&guid=">the original</a> on 2012-03-24<span class="reference-accessdate">. Retrieved <span class="nowrap">2015-04-21</span></span>.</cite></span>
</li>
<li id="cite_note-Gaboury-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-Gaboury_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Gaboury_5-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFGaboury2018" class="citation journal cs1">Gaboury, J. (2018-03-01). <a rel="nofollow" class="external text" href="https://escholarship.org/uc/item/0b3873pn">"The random-access image: Memory and the history of the computer screen"</a>. <i>Grey Room</i>. <b>70</b> (70): <span class="nowrap">24–</span>53. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1162%2FGREY_a_00233">10.1162/GREY_a_00233</a>. <a href="Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://hdl.handle.net/21.11116%2F0000-0001-FA73-4">21.11116/0000-0001-FA73-4</a></span>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a> <a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1526-3819">1526-3819</a>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:57565564">57565564</a>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFWilliamsKilburn1949" class="citation journal cs1">Williams, F. C.; Kilburn, T. (March 1949). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20190426011059/https://ieeexplore.ieee.org/document/5241129">"A storage system for use with binary-digital computing machines"</a>. <i>Proceedings of the IEE - Part III: Radio and Communication Engineering</i>. <b>96</b> (40): 81–. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1049%2Fpi-3.1949.0018">10.1049/pi-3.1949.0018</a>. Archived from <a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/5241129">the original</a> on April 26, 2019.</cite></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://curation.cs.manchester.ac.uk/digital60/www.digital60.org/birth/manchestercomputers/mark1/documents/report1947cover.html">"Kilburn 1947 Report Cover Notes (Digital 60)"</a>. <i>curation.cs.manchester.ac.uk</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2019-04-26</span></span>.</cite></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite id="CITEREFD._OphirS._RankowitzB._J._ShepherdR._J._Spinrad1968" class="citation cs2">D. Ophir; S. Rankowitz; B. J. Shepherd; R. J. Spinrad (June 1968), "BRAD: The Brookhave Raster Display", <i>Communications of the ACM</i>, vol. 11, no. 6, pp. <span class="nowrap">415–</span>416, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F363347.363385">10.1145/363347.363385</a></span>, <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:11160780">11160780</a></cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFNoll1971" class="citation journal cs1">Noll, A. Michael (March 1971). <a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F362566.362567">"Scanned-Display Computer Graphics"</a>. <i>Communications of the ACM</i>. <b>14</b> (3): <span class="nowrap">145–</span>150. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F362566.362567">10.1145/362566.362567</a></span>. <a href="S2CID_(identifier)" class="mw-redirect" title="S2CID (identifier)">S2CID</a> <a rel="nofollow" class="external text" href="https://api.semanticscholar.org/CorpusID:2210619">2210619</a>.</cite></span>
</li>
<li id="cite_note-Shoup_SuperPaint-10"><span class="mw-cite-backlink">^ <a href="#cite_ref-Shoup_SuperPaint_10-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Shoup_SuperPaint_10-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFRichard_Shoup2001" class="citation web cs1">Richard Shoup (2001). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20040612215245/http://accad.osu.edu/~waynec/history/PDFs/Annals_final.pdf">"SuperPaint: An Early Frame Buffer Graphics System"</a> <span class="cs1-format">(PDF)</span>. <i>Annals of the History of Computing</i>. IEEE. Archived from <a rel="nofollow" class="external text" href="https://ohiostate.pressbooks.pub/app/uploads/sites/45/2017/09/Annals_final.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2004-06-12.</cite></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><cite id="CITEREFGoldwasser1983" class="citation conference cs1">Goldwasser, S.M. (June 1983). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=8MuoCAAAQBAJ&pg=PA81"><i>Computer Architecture For Interactive Display Of Segmented Imagery</i></a>. Computer Architectures for Spatially Distributed Data. <a href="Springer_Science_%26_Business_Media" class="mw-redirect" title="Springer Science & Business Media">Springer Science & Business Media</a>. pp. 75–94 (81). <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9783642821509</bdi>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation cs2"><a rel="nofollow" class="external text" href="http://s3data.computerhistory.org/brochures/evanssutherland.3d.1974.102646288.pdf"><i>Picture System</i></a> <span class="cs1-format">(PDF)</span>, Evans & Sutherland<span class="reference-accessdate">, retrieved <span class="nowrap">2017-12-31</span></span></cite></span>
</li>
<li id="cite_note-NYIT-History-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-NYIT-History_13-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.cs.cmu.edu/~ph/nyit/masson/nyit.html">"History of the New York Institute of Technology Graphics Lab"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2007-08-31</span></span>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external free" href="http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html">http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/overd.html</a> XFree86 Video Timings HOWTO: Overdriving Your Monitor</span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://karbosguide.com/hardware/module7b1.htm">"An illustrated Guide to the Video Cards"</a>. <i>karbosguide.com</i>.</cite></span>
</li>
</ol></div></div>
<style data-mw-deduplicate="TemplateStyles:r1239549316">
/* start https://en.wikipedia.org/ */
.mw-parser-output .refbegin{margin-bottom:0.5em}.mw-parser-output .refbegin-hanging-indents>ul{margin-left:0}.mw-parser-output .refbegin-hanging-indents>ul>li{margin-left:0;padding-left:3.2em;text-indent:-3.2em}.mw-parser-output .refbegin-hanging-indents ul,.mw-parser-output .refbegin-hanging-indents ul li{list-style:none}@media(max-width:720px){.mw-parser-output .refbegin-hanging-indents>ul>li{padding-left:1.6em;text-indent:-1.6em}}.mw-parser-output .refbegin-columns{margin-top:0.3em}.mw-parser-output .refbegin-columns ul{margin-top:0}.mw-parser-output .refbegin-columns li{page-break-inside:avoid;break-inside:avoid-column}@media screen{.mw-parser-output .refbegin{font-size:90%}}
/* end https://en.wikipedia.org/ */
</style><div class="refbegin" style="">
<ul><li><cite id="CITEREFAlvy_Ray_Smith1997" class="citation web cs1">Alvy Ray Smith (May 30, 1997). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120207124911/https://design.osu.edu/carlson/history/PDFs/14_paint.pdf">"Digital Paint Systems: Historical Overview"</a> <span class="cs1-format">(PDF)</span>. <i>Microsoft Tech Memo 14</i>. Archived from <a rel="nofollow" class="external text" href="http://accad.osu.edu/~waynec/history/PDFs/14_paint.pdf">the original</a> <span class="cs1-format">(PDF)</span> on February 7, 2012.</cite></li>
<li><cite id="CITEREFWayne_Carlson2003" class="citation web cs1">Wayne Carlson (2003). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120314015613/http://design.osu.edu/carlson/history/lesson15.html">"Hardware advancements"</a>. <i>A Critical History of Computer Graphics and Animation</i>. The Ohio State University. Archived from <a rel="nofollow" class="external text" href="http://accad.osu.edu/~waynec/history/lesson15.html">the original</a> on 2012-03-14.</cite></li>
<li><cite id="CITEREFAlvy_Ray_Smith2001" class="citation web cs1">Alvy Ray Smith (2001). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120205050230/https://design.osu.edu/carlson/history/PDFs/paint.pdf">"Digital Paint Systems: An Anecdotal and Historical Overview"</a> <span class="cs1-format">(PDF)</span>. IEEE Annals of the History of Computing. Archived from <a rel="nofollow" class="external text" href="http://accad.osu.edu/~waynec/history/PDFs/paint.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2012-02-05.</cite></li></ul>
</div>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20060211051810/http://www.acid.org/radio/arts-ep05-transcript.txt">Interview with NYIT researcher discussing the 24-bit system</a></li>
<li><a rel="nofollow" class="external text" href="http://www.sunhelp.org/faq/FrameBufferHistory.html">History of Sun Microsystems' Framebuffers</a></li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Graphics_processing_unit85" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Graphics_processing_unit85" style="font-size:114%;margin:0 4em"><a href="Graphics_processing_unit" title="Graphics processing unit">Graphics processing unit</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">GPU</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Desktop</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="List_of_Intel_graphics_processing_units" title="List of Intel graphics processing units">Intel</a>
<ul><li><a href="Intel_Graphics_Technology" title="Intel Graphics Technology">GT</a></li>
<li><a href="Intel_Xe" title="Intel Xe">Xe</a></li>
<li><a href="Intel_Arc" title="Intel Arc">Arc</a></li></ul></li>
<li><a href="List_of_Nvidia_graphics_processing_units" title="List of Nvidia graphics processing units">Nvidia</a>
<ul><li><a href="GeForce" title="GeForce">GeForce</a></li>
<li><a href="Quadro" title="Quadro">Quadro</a></li>
<li><a href="Nvidia_Tesla" title="Nvidia Tesla">Tesla</a></li>
<li><a href="Nvidia_Tegra" class="mw-redirect" title="Nvidia Tegra">Tegra</a></li></ul></li>
<li><a href="List_of_AMD_graphics_processing_units" title="List of AMD graphics processing units">AMD</a>
<ul><li><a href="Radeon" title="Radeon">Radeon</a></li>
<li><a href="Radeon_Pro" title="Radeon Pro">Radeon Pro</a></li>
<li><a href="AMD_Instinct" title="AMD Instinct">Instinct</a></li></ul></li>
<li><a href="Matrox" title="Matrox">Matrox</a></li>
<li><a href="InfiniteReality" title="InfiniteReality">InfiniteReality</a></li>
<li><a href="NEC_%C2%B5PD7220" class="mw-redirect" title="NEC µPD7220">NEC µPD7220</a></li>
<li><a href="Comparison_of_3dfx_graphics_processing_units" class="mw-redirect" title="Comparison of 3dfx graphics processing units">3dfx Voodoo</a></li>
<li><a href="S3_Graphics" title="S3 Graphics">S3</a></li>
<li><a href="Glaze3D" title="Glaze3D">Glaze3D</a></li>
<li><a href="Apple_silicon" title="Apple silicon">Apple silicon</a></li>
<li><a href="Jingjia_Micro" title="Jingjia Micro">Jingjia Micro</a></li>
<li><a href="Tseng_Labs" title="Tseng Labs">Tseng Labs</a></li>
<li><a href="Silicon_Integrated_Systems#Graphics_chipsets" title="Silicon Integrated Systems">SiS</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Mobile</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Adreno" title="Adreno">Adreno</a></li>
<li><a href="Apple_silicon" title="Apple silicon">Apple silicon</a></li>
<li><a href="Mali_(GPU)" class="mw-redirect" title="Mali (GPU)">Mali</a></li>
<li><a href="PowerVR" title="PowerVR">PowerVR</a></li>
<li><a href="VideoCore" title="VideoCore">VideoCore</a></li>
<li><a href="Vivante_Corporation" title="Vivante Corporation">Vivante</a></li>
<li><a href="Imageon" title="Imageon">Imageon</a></li>
<li><a href="Intel_2700G" title="Intel 2700G">Intel 2700G</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Architecture</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Compute_kernel" title="Compute kernel">Compute kernel</a></li>
<li><a href="Semiconductor_device_fabrication" title="Semiconductor device fabrication">Fabrication</a>
<ul><li><a href="CMOS" title="CMOS">CMOS</a></li>
<li><a href="FinFET" class="mw-redirect" title="FinFET">FinFET</a></li>
<li><a href="MOSFET" title="MOSFET">MOSFET</a></li></ul></li>
<li><a href="Graphics_pipeline" title="Graphics pipeline">Graphics pipeline</a>
<ul><li><a href="Geometry_pipelines" title="Geometry pipelines">Geometry</a></li>
<li><a href="Vertex_pipeline" title="Vertex pipeline">Vertex</a></li></ul></li>
<li><a href="High-dynamic-range_rendering" title="High-dynamic-range rendering">HDR rendering</a></li>
<li><a href="Multiply%E2%80%93accumulate_operation" title="Multiply–accumulate operation">MAC</a></li>
<li><a href="Rasterisation" title="Rasterisation">Rasterisation</a>
<ul><li><a href="Shading" title="Shading">Shading</a></li></ul></li>
<li><a href="Ray-tracing_hardware" title="Ray-tracing hardware">Ray-tracing</a></li>
<li><a href="Single_instruction%2C_multiple_data" title="Single instruction, multiple data">SIMD</a>
<ul><li><a href="Single_instruction%2C_multiple_threads" title="Single instruction, multiple threads">SIMT</a></li></ul></li>
<li><a href="Tessellation_(computer_graphics)" title="Tessellation (computer graphics)">Tessellation</a></li>
<li><a href="Transform%2C_clipping%2C_and_lighting" title="Transform, clipping, and lighting">T&L</a></li>
<li><a href="Tiled_rendering" title="Tiled rendering">Tiled rendering</a></li>
<li><a href="Unified_shader_model" title="Unified shader model">Unified shader model</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Components</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Blitter" title="Blitter">Blitter</a></li>
<li><a href="Geometry_processing" title="Geometry processing">Geometry processor</a></li>
<li><a href="Input%E2%80%93output_memory_management_unit" title="Input–output memory management unit">Input–output memory management unit</a></li>
<li><a href="Render_output_unit" title="Render output unit">Render output unit</a></li>
<li><a href="Shader" title="Shader">Shader unit</a></li>
<li><a href="Stream_processing" title="Stream processing">Stream processor</a></li>
<li><a href="Tensor" title="Tensor">Tensor unit</a></li>
<li><a href="Texture_mapping_unit" title="Texture mapping unit">Texture mapping unit</a></li>
<li><a href="Video_display_controller" title="Video display controller">Video display controller</a></li>
<li><a href="Video_processing_unit" class="mw-redirect" title="Video processing unit">Video processing unit</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Memory</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Direct_memory_access" title="Direct memory access">DMA</a></li>
<li><a href="SGRAM" class="mw-redirect" title="SGRAM">SGRAM</a>
<ul><li><a href="GDDR_SDRAM" title="GDDR SDRAM">GDDR</a></li>
<li><a href="GDDR2" class="mw-redirect" title="GDDR2">GDDR2</a></li>
<li><a href="GDDR3" class="mw-redirect" title="GDDR3">GDDR3</a></li>
<li><a href="GDDR4" class="mw-redirect" title="GDDR4">GDDR4</a></li>
<li><a href="GDDR5" class="mw-redirect" title="GDDR5">GDDR5</a></li>
<li><a href="GDDR6" class="mw-redirect" title="GDDR6">GDDR6</a></li>
<li><a href="GDDR7" class="mw-redirect" title="GDDR7">GDDR7</a></li></ul></li>
<li><a href="High_Bandwidth_Memory" title="High Bandwidth Memory">HBM</a>
<ul><li><a href="HBM2" class="mw-redirect" title="HBM2">HBM2</a></li>
<li><a href="HBM2E" class="mw-redirect" title="HBM2E">HBM2E</a></li>
<li><a href="HBM3" class="mw-redirect" title="HBM3">HBM3</a></li>
<li><a href="HBM-PIM" class="mw-redirect" title="HBM-PIM">HBM-PIM</a></li>
<li><a href="HBM3E" class="mw-redirect" title="HBM3E">HBM3E</a></li></ul></li>
<li><a href="Memory_bandwidth" title="Memory bandwidth">Memory bandwidth</a></li>
<li><a href="Memory_controller" title="Memory controller">Memory controller</a></li>
<li><a href="Shared_graphics_memory" title="Shared graphics memory">Shared graphics memory</a></li>
<li><a href="Texture_memory" title="Texture memory">Texture memory</a></li>
<li><a href="Video_RAM_(dual-ported_DRAM)" class="mw-redirect" title="Video RAM (dual-ported DRAM)">VRAM</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Form factor</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Semiconductor_intellectual_property_core" title="Semiconductor intellectual property core">IP core</a></li>
<li><a href="Video_card" class="mw-redirect" title="Video card">Discrete graphics</a>
<ul><li><a href="GPU_cluster" title="GPU cluster">Clustering</a></li>
<li><a href="GPU_switching" title="GPU switching">Switching</a></li></ul></li>
<li><a href="External_GPU" class="mw-redirect" title="External GPU">External graphics</a></li>
<li><a href="Integrated_graphics" class="mw-redirect" title="Integrated graphics">Integrated graphics</a></li>
<li><a href="System_on_a_chip" title="System on a chip">System on a chip</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Performance</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Clock_rate" title="Clock rate">Clock rate</a></li>
<li><a href="Computer_display_standard" class="mw-redirect" title="Computer display standard">Display resolution</a></li>
<li><a href="Fillrate" title="Fillrate">Fillrate</a>
<ul><li><a href="Gigapixel_image" title="Gigapixel image">Pixel/s</a></li>
<li><a href="Texel_(graphics)" title="Texel (graphics)">Texel/s</a></li></ul></li>
<li><a href="FLOPS" class="mw-redirect" title="FLOPS">FLOP/s</a></li>
<li><a href="Frame_rate" title="Frame rate">Frame rate</a></li>
<li><a href="Performance_per_watt" title="Performance per watt">Performance per watt</a></li>
<li><a href="Transistor_count" title="Transistor count">Transistor count</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Misc</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="2D_computer_graphics" title="2D computer graphics">2D</a>
<ul><li><a href="Scrolling" title="Scrolling">Scrolling</a></li>
<li><a href="Sprite_(computer_graphics)" title="Sprite (computer graphics)">Sprite</a></li>
<li><a href="Tile-based_video_game" title="Tile-based video game">Tile</a></li></ul></li>
<li><a href="3D_computer_graphics" title="3D computer graphics">3D</a>
<ul><li><a href="Global_illumination" title="Global illumination">GI</a></li>
<li><a href="Texture_mapping" title="Texture mapping">Texture</a></li></ul></li>
<li><a href="Application-specific_integrated_circuit" title="Application-specific integrated circuit">ASIC</a></li>
<li><a href="General-purpose_computing_on_graphics_processing_units" title="General-purpose computing on graphics processing units">GPGPU</a></li>
<li><a href="Graphics_library" title="Graphics library">Graphics library</a></li>
<li><a href="Hardware_acceleration" title="Hardware acceleration">Hardware acceleration</a></li>
<li><a href="Digital_image_processing" title="Digital image processing">Image processing</a>
<ul><li><a href="Image_compression" title="Image compression">Compression</a></li></ul></li>
<li><a href="Parallel_computing" title="Parallel computing">Parallel computing</a></li>
<li><a href="Vector_processor" title="Vector processor">Vector processor</a></li>
<li><a href="Video_coding_format" title="Video coding format">Video coding</a>
<ul><li><a href="Video_codec" title="Video codec">Codec</a></li></ul></li>
<li><a href="Very_long_instruction_word" title="Very long instruction word">VLIW</a></li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-06-16" href="https://en.wikipedia.org/wiki/?title=Framebuffer&oldid=1295897316">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>